// pages/tab2/tab2.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    id:2,
    num1:7,
    num2:3,
    userInfo:{
      'name':'测试',
      'value':'test',
    },
    list:[1,2,3],
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log(options)
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  //更新list
  updateList(){
    //新增数组元素
    // this.data.list.push(4)
    // this.setData({
    //   list:this.data.list,
    // })
    const list = this.data.list.concat(4)
    this.setData({
      list,
    })    
    //修改数组元素

    //删除数组元素
  },

  updateNum(){
    //通过赋值的方式直接修改数据，能修改成功，但是页面上的值不会变
    // this.data.num1 += 1
    this.setData({
      num1:this.data.num1 + 1
    })
    console.log("num1 =" + this.data.num1)
  },  

  consoleLog(){
    console.log("测试一下")
  },

  //更新userInfo
  updateUserInfo(){
    //新增单个/多个属性(使用数据路径的方式修改和新增，适用于数据量小的情况)
    // this.setData({
    //   //如果给对象新增属性，可以将key写成数据路径的方式 a.b.c
    //   'userInfo.name':'邓',
    //   'userInfo.seName':'澳',
    //   'userInfo.laName':'坤',
    //   // 'userInfo.name':'测试',
    // })

    //数据量大的情况，可以使用ES6提供的展开运算符和Object.assign()
    //ES6提供的展开运算符
    // 通过展开运算符能够将对象中的属性赋值给另一个对象
    // 后面的属性会覆盖前面的属性
    // const userInfo = {
    //   ...this.userInfo,
    //   name:'邓澳坤',
    //   value:'测试',
    // }
    // this.setData({
    //   // userInfo:userInfo
    //   // 键和值一样的话，可以简写
    //   userInfo
    // })
    
    //Object.assign()将多个对象合并为一个对象，从后往前合并->{value:'text'}->{name:'Dak',value:'test'}
    // const userInfo = Object.assign(this.data.userInfo,{name:'Dak'},{value:'test'})
    // this.setData({
    //   userInfo
    // })

    //删除对象属性
    // delete this.data.userInfo.name
    // //删除后需要将更新后的数据对象，通过setData再设置一次
    // this.setData({
    //   userInfo:this.data.userInfo
    // })
    // console.log(this.data.userInfo.name)

    //删除多个属性，使用rest剩余参数(...表示将其他参数都放入到rest对象中，这里的对象可以是别的，整体思路是将需要删除的数据和需要保留的数据用不同的对象承接，然后将存有保留数据的对象，通过setData赋值)
    const {name,...test} = this.data.userInfo
    this.setData({
      userInfo:test,
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})